package pharao.client.views.game.landkarte;

import hmvc4gwt.client.event.IHmvcEvent;
import hmvc4gwt.framework.client.model.GuiModel;

import com.google.gwt.user.client.ui.Hyperlink;

import pharao.client.dto.LandkarteDTO;
import pharao.client.dto.UserDTO;
import pharao.client.i18ln.GuiText;
import pharao.client.views.events.GetModelDataEvent;
import pharao.client.views.events.SetModelDataEvent;
import pharao.client.views.game.navigation.GameNavigationModel;
import pharao.client.views.game.player.events.GetUserEvent;
import pharao.client.views.game.player.events.SetUserEvent;

public class LandkarteModel extends GuiModel {

	/**
	 * liefert einen neuen Link zur Map
	 */
	public static Hyperlink getHyperlinkMap() {
		return new Hyperlink(GuiText.constants.link_play(),
				GameNavigationModel.linkMap);
	}

	private LandkarteDTO landkarteDTO;

	public void init() {

		getController().register(GetModelDataEvent.class, this);
		getController().register(SetUserEvent.class, this);

		
	}

	private LandkarteDTO getLandkarteDTO() {
		
		if (landkarteDTO == null) {
			getController().fireEvent(new GetUserEvent(), true, false, false);
		}
		
		return landkarteDTO;
	}

	public void handleEvent(IHmvcEvent event) {

		if (event instanceof GetModelDataEvent) {

			getController().fireEventLocal(
					new SetModelDataEvent(getLandkarteDTO()));

		} else if (event instanceof SetUserEvent) {

			if (event.getPayload() instanceof UserDTO) {
				UserDTO userDTO = (UserDTO) event.getPayload();
				setLandkarteDTO(userDTO.getLandkarteDTO());
			}

		}

	}

	private void setLandkarteDTO(LandkarteDTO landkarteDTO) {
		this.landkarteDTO = landkarteDTO;
	}

	public void terminate() {
		// TODO Auto-generated method stub

	}

}
